1. Technical Field
This disclosure relates generally to querying of multidimensional data in a data processing system and more specifically to semantic verification of multidimensional data sources in a data processing system.
2. Description of the Related Art
Multidimensional expression query language (MDX) is a query language used with most multidimensional databases. The multidimensional data sources enable organization and manipulation of large volumes of data using data structures referred to as data cubes. A data cube includes multiple hierarchical dimensions wherein the dimensions have a number of levels and members capable of storing multidimensional data. The multidimensional expression query language is used by software applications to interface with the multidimensional data sources by building complex queries to retrieve and manipulate the extracted data.
Support for the multidimensional expression query language typically varies from database vendor to database vendor. A challenge for enterprise software systems which work with many different multidimensional databases is how to provide consistent behavior and analysis and reporting facilities to end users when such facilities do not necessary exist in the multidimensional expression query language query engine in the database system being queried.
The same semantic meaning in each system cannot be obtained when the same method or construct in one system means something slightly different in the other system. Differences in results occur because of minor differences in the interpretation of the multidimensional expression query language, often relating to how the database vendor constructed the respective software system. These differences can lead to an enterprise software system posing a query which is expected to have an intended result while the database system interprets the posed inquiry with a different semantic than expected.
Checking for semantic differences is largely a manual, person intensive process that is also prone to error and delay. Software developers require a capability to more easily create a software system which will support more data sources in an efficient manner which is not as prone to error.